'use strict'
const path = require('path')
const defaultSettings = require('./src/settings.js')

function resolve(dir) {
  return path.join(__dirname, dir)
}

const name = defaultSettings.title || 'vue Element Admin' // page title

// If your port is set to 80,
// use administrator privileges to execute the command line.
// For example, Mac: sudo npm run
// You can change the port by the following method:
// port = 9527 npm run dev OR npm run dev --port = 9527
const port = process.env.port || process.env.npm_config_port || 9527 // dev port

// All configuration item explanations can be find in https://cli.vuejs.org/config/
module.exports = {
  /**
   * You will need to set publicPath if you plan to deploy your site under a sub path,
   * for example GitHub Pages. If you plan to deploy your site to https://foo.github.io/bar/,
   * then publicPath should be set to "/bar/".
   * In most cases please use '/' !!!
   * Detail: https://cli.vuejs.org/config/#publicpath
   */
  publicPath: '/',
  outputDir: 'dist',
  assetsDir: 'static',
  lintOnSave: process.env.NODE_ENV === 'development',
  productionSourceMap: false,
  // 开发服务配置 上线就不起作用
  devServer: {
    port: port,
    open: true,
    overlay: {
      warnings: false,
      errors: true
    },
    // 代理服务器配置
    proxy: {
      // 如果请求地址以/api打头,就出触发代理机制
      // http://localhost:9588/api/login -> http://localhost:3000/api/login
      '/api': {
        target: 'http://localhost:3000' // 我们要代理的真实接口地址
      }
    }
  },
  // before: require('./mock/mock-server.js')
}
// configureWebpack: {
//   // provide the app's title in webpack's name field, so that
//   // it can be accessed in index.html to inject the correct title.
//   name: name,
//     resolve: {
//     alias: {
//       '@': resolve('src')
//     }
//   }
// },
// chainWebpack (config) {
//   // it can improve the speed of the first screen, it is recommended to turn on preload
//   // it can improve the speed of the first screen, it is recommended to turn on preload
//   config.plugin('preload').tap(() => [
//     {
//       rel: 'preload',
//       // to ignore runtime.js
//       // https://github.com/vuejs/vue-cli/blob/dev/packages/@vue/cli-service/lib/config/app.js#L171
//       fileBlacklist: [/\.map$/, /hot-update\.js$/, /runtime\..*\.js$/],
//       include: 'initial'
//     }
//   ])

//   // when there are many pages, it will cause too many meaningless requests
//   config.plugins.delete('prefetch')

//   // set svg-sprite-loader
//   config.module
//     .rule('svg')
//     .exclude.add(resolve('src/icons'))
//     .end()
//   config.module
//     .rule('icons')
//     .test(/\.svg$/)
//     .include.add(resolve('src/icons'))
//     .end()
//     .use('svg-sprite-loader')
//     .loader('svg-sprite-loader')
//     .options({
//       symbolId: 'icon-[name]'
//     })
//     .end()

//   config
//     .when(process.env.NODE_ENV !== 'development',
//       config => {
//         config
//           .plugin('ScriptExtHtmlWebpackPlugin')
//           .after('html')
//           .use('script-ext-html-webpack-plugin', [{
//             // `runtime` must same as runtimeChunk name. default is `runtime`
//             inline: /runtime\..*\.js$/
//           }])
//           .end()
//         config
//           .optimization.splitChunks({
//             chunks: 'all',
//             cacheGroups: {
//               libs: {
//                 name: 'chunk-libs',
//                 test: /[\\/]node_modules[\\/]/,
//                 priority: 10,
//                 chunks: 'initial' // only package third parties that are initially dependent
//               },
//               elementUI: {
//                 name: 'chunk-elementUI', // split elementUI into a single package
//                 priority: 20, // the weight needs to be larger than libs and app or it will be packaged into libs or app
//                 test: /[\\/]node_modules[\\/]_?element-ui(.*)/ // in order to adapt to cnpm
//               },
//               commons: {
//                 name: 'chunk-commons',
//                 test: resolve('src/components'), // can customize your rules
//                 minChunks: 3, //  minimum common number
//                 priority: 5,
//                 reuseExistingChunk: true
//               }
//             }
//           })
//         // https:// webpack.js.org/configuration/optimization/#optimizationruntimechunk
//         config.optimization.runtimeChunk('single')
//       }
//     )
// }
